library(tidyverse)3 Initiation Graphiques
4 Simulation d’un jeu de données
n <- 5000
id <- 1:n
x <- rnorm(n, 50, 20)
status <- rbinom(n, size = 1, prob = 0.3)
y <- runif(n, min = 20, max = 80)
cat <- sample(c("Lung", "Liver", "Kidney"), n, replace = T)
z <- runif(n, 0, 1)
df <- data.frame("id" = id,
"x" = x,
"y" = y,
"z" = z,
"status" = status,
"organ" = cat)
df <- mutate(df, status = as.factor(status))5 Graphiques avec R base
En général, on réalise les graphiques avec le package ggplot2. Cependant, les fonctions de R base peuvent être utiles quand on veut juste un apperçu rapide des données.
Nuage de points
plot(df$x, df$y)Courbe
plot(sort(df$x), df$y, type = "l")Histogramme
hist(df$x)Boxplot
boxplot(df$x)6 Graphiques avec ggplot2
Pour réaliser un graphique avec ggplot2, on commence par utilisé la fonction ggplot() dans laquelle on spécifie les données à utiliser. Ensuite, on rajoute la fonction pour choisir le type de graphique et on peut mettre d’autres fonctions pour le personnalisé. On utilise + pour enchaîner les fonctions graphiques.
On peut spécifier les données des axes soit dans la fonction ggplot(), soit dans la fonction du graphique. Dans les deux cas, cela se fait avec la fonction aes()
Les fonctions définissant les type de graphiques commencent par geom_
6.1 Nuage de points avec geom_point()
ggplot(df, aes(x=x, y=y))+
geom_point()On aurait aussi pû spécifié l’aes dans geom_point()
ggplot(df)+
geom_point(aes(x=x, y=y))6.1.1 Ajouter des couleurs
On peut ajouter des couleurs soit en fixant une couleurs si on veut juste modifier le noir qui est la couleur par défaut. Soit en colorant en fonction d’une variable.
Pour choisir la couleur, on utilise l’es arguments’argument col =.
Si on veut choisir une couleur fixe, on utilise définit col dans la fonction du type de graphique, à l’extérieur de l’aes().
Par contre, si on veut définir les couleurs en fonction d’une variable, alors on le défini à l’intérieur de l’aes()
ggplot(df, aes(x=x, y=y))+
geom_point(col = "lightblue")Couleur en fonction de la variable organ
ggplot(df, aes(x=x, y=y, col = organ))+
geom_point()On peut également colorer en fonction d’une variable continue et avoir un dégradé
ggplot(df, aes(x, y, col = z))+
geom_point()+
scale_color_continuous()6.1.2 Forme des points
On peut définir la forme des points avec l’argument shape =. De même que pour les couleurs, si on le définit à l’extérieur de l’aes, la même forme s’appliquera à tous les points.
Si on le définit à l’intérieur de l’aes, la forme dépendra de la variable choisie
ggplot(df, aes(x=x, y=y))+
geom_point(shape = 3)ggplot(df, aes(x=x, y=y, shape = organ))+
geom_point()6.1.3 Modifier la taille des points
On peut modifier la taille des points avec l’argument size = . De même que pour les couleurs, on la fixe à l’extérieur de l’aes ou on la laisse dépendre d’une variable à l’intérieur de l’aes
ggplot(df, aes(x=x, y=y))+
geom_point(size = 3)ggplot(df, aes(x=x, y=y, size = status))+
geom_point()Warning: Using size for a discrete variable is not advised.
6.2 Histogramme avec geom_histogram()
ggplot(df, aes(x))+
geom_histogram()`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
6.2.1 Ajouter des couleurs
On peut ajouter des couleurs soit en fixant une couleurs si on veut juste modifier le noir qui est la couleur par défaut. Soit en colorant en fonction d’une variable.
Pour choisir la couleur, on utilise les arguments col = ou fill = . Col est utilisé pour les points et les lignes et les bords des barplots. Pour colorer l’intérieur des barplots on utilise fil.
Si on veut choisir une couleur fixe, on utilise les arguments col ou fill dans la fonction du type de graphique, à l’extérieur de l’aes().
Par contre, si on veut définir les couleurs en fonction d’une variable, alors on le défini à l’intérieur de l’aes()
ggplot(df, aes(x))+
geom_histogram(col = "#7c1444")`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(df, aes(x))+
geom_histogram(fill = "#7c1444")`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
On peut mettre un effet de transparence avec l’argument alpha =
ggplot(df, aes(x))+
geom_histogram(fill = "#7c1444", alpha = 0.6)`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Couleurs en fonction d’une variable
ggplot(df, aes(x, fill = organ))+
geom_histogram()`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
6.2.2 Boxplot avec geom_boxplot()
ggplot(df, aes(x))+
geom_boxplot()On peut l’avoir dans l’autre sens en utilisant coord_flip()
ggplot(df, aes(x))+
geom_boxplot()+
coord_flip()On peut faire plusieurs boxplot selon les catégories d’une variables catégorielle sur le même graphique
ggplot(df, aes(organ, x))+
geom_boxplot()6.2.3 Ajouter des couleurs
Pour les boxplots, les couleurs fonctionnent de la même façon que pour les histogrammes : col pour définir les couleurs des bords, des quartiles, des outliers, etc, et fill pour l’intérieur du boxplot
ggplot(df, aes(organ, x))+
geom_boxplot(col = "firebrick")ggplot(df, aes(organ, x))+
geom_boxplot(fill = "firebrick")ggplot(df, aes(organ, x, col = organ))+
geom_boxplot()ggplot(df, aes(organ, x, fill = organ))+
geom_boxplot()Remarque: on peut le faire en définissant uniquement une variable et la variable de couleur, mais dans ce cas les modalités n’apparaissent pas sur l’axe
ggplot(df, aes(x, fill = organ))+
geom_boxplot()Remarque: on ne peut pas colorer que ce soit avec col ou fill en fonction d’une troisième variable
6.2.4 Autres personnalisations
Augmenter l’épaisseurs du boxplot avec size
ggplot(df, aes(organ, x))+
geom_boxplot(size = 1)6.3 Barplot avec geom_bar()
ggplot(df, aes(organ))+
geom_bar()Ainsi on a le nombre d’observations qui prennent chaque modalité.
Une autre façon de faire :
df_bar <- df %>%
group_by(organ) %>%
summarise(n=n())
ggplot(df_bar, aes(organ, n))+
geom_bar(stat = "identity")Pour l’orienter dans l’autre sens on ajoute la fonction coord_flip()
ggplot(df_bar, aes(organ, n))+
geom_bar(stat = "identity")+
coord_flip()6.3.1 Ajouter des couleurs
ggplot(df, aes(organ))+
geom_bar(col = "red")ggplot(df, aes(organ))+
geom_bar(fill = "orange")6.3.2 Superposer des modalités
ggplot(df, aes(organ, fill=status))+
geom_bar()Ou
df_bar <- df %>%
group_by(organ, status) %>%
summarise(n=n())`summarise()` has grouped output by 'organ'. You can override using the
`.groups` argument.
ggplot(df_bar, aes(organ, n, fill = status))+
geom_bar(stat = "identity")6.4 Courbes avec geom_line()
ggplot(df, aes(x, y))+
geom_line()6.4.1 Couleurs de la courbe
ggplot(df, aes(x, y))+
geom_line(col = "darkgreen")Si on défini la couleur en fonction d’une variable catégorielle, alors on aura autant de courbes que de modalités
ggplot(df, aes(x, y, col = organ))+
geom_line()6.4.2 Format de la courbe
On peut changer l’aspect de la courbe avec l’argument linetype
ggplot(df, aes(x, y))+
geom_line(linetype = "dashed")Pour changer l’épaisseur du trait, on utilise l’argume linewidth
ggplot(df, aes(x, y))+
geom_line(linewidth = 0.8)6.5 Personnalisation des couleurs
Lorsque l’on définit des couleurs en fonction d’une variable, les couleurs sont mises par défaut.
On peut modifier cela en définissant nos propres couleurs avec la fonction scale_color_manual() ou scale_fill_manual()
ggplot(df, aes(organ, fill=status))+
geom_bar()+
scale_fill_manual(values = c("firebrick", "orange"))On peut indiquer clairement quelle couleur correspond à quelle modalité
ggplot(df, aes(organ, fill=status))+
geom_bar()+
scale_fill_manual(values = c("1" = "firebrick",
"0" = "orange"))On peut aussi dans cette fonction renommer les modalités pour changer leur nom dans la légende
ggplot(df, aes(organ, fill=status))+
geom_bar()+
scale_fill_manual(values = c("1" = "firebrick",
"0" = "orange"),
labels = c("0" = "Alive",
"1" = "Dead")) Pour un dégradé de couleurs associé à une variable continue, on utilise la fonction scale_colour_gradient()
ggplot(df, aes(x, y, col = z))+
geom_point()+
scale_colour_gradient(low = "black", high = "white")Ou si on veut spécifier plusieurs couleurs la fonction scale_colour_gradientn()
ggplot(df, aes(x, y, col = z))+
geom_point()+
scale_colour_gradientn(colours = c("darkred", "orange", "yellow", "white"))6.6 Ajouter des lignes sur le graphique
Il est parfois utile de rajouter une ligne horizontale ou verticale sur un graphique afin de mettre en avant une graduation. Cela se fait avec la fonction geom_hline pour une ligne horizontale, geom_vline() pour une ligne verticale ou geom_abline() pour définir une droite spécifique comme par exemple une droite de régression
Ligne horizontale
ggplot(df, aes(x,y))+
geom_point()+
geom_hline(yintercept = 60, col="darkred")Ligne verticale
ggplot(df, aes(x,y))+
geom_point()+
geom_vline(xintercept = 0, col="darkred")Droite
ggplot(df, aes(x,y))+
geom_point()+
geom_abline(slope=1, intercept = 20, col = "darkred", linetype = "dashed", linewidth = 1)Droite de régression
Pour ajouter une droite de régression, on peut utiliser les fonctions geom_smooth() ou stat_smooth() avec l’argument method = “lm” pour une régression linéaire par exemple.
L’argument se permet de montrer ou non l’intervalle de confiance
ggplot(df, aes(x,y))+
geom_point()+
geom_smooth(method="lm", se=T)`geom_smooth()` using formula = 'y ~ x'
ggplot(df, aes(x,y))+
geom_point()+
stat_smooth(method="lm", se=T)`geom_smooth()` using formula = 'y ~ x'
6.7 Noms des axes et titres
Pour modifier le nom des axes on utilse les fonctions xlab(), ylab() ou labs()
ggplot(df, aes(x=x, y=y))+
geom_point()+
xlab("New x name")+
ylab("New y name")ou
ggplot(df, aes(x=x, y=y))+
geom_point()+
labs(x ="New x name",
y="New y name")Pour ajouter un titre, on utilise soit la fonction ggtitle, soit encore labs()
ggplot(df, aes(x=x, y=y))+
geom_point()+
ggtitle("Scatter plot of x and y")ggplot(df, aes(x=x, y=y))+
geom_point()+
labs(x ="New x name",
y="New y name",
title = "Scatter plot of x and y")Dans la fonction labs(), on peut aussi définir un sous-titre, une note de bas de page
ggplot(df, aes(x=x, y=y))+
geom_point()+
labs(x ="New x name",
y="New y name",
title = "My graph",
subtitle = "Scatter plot of x and y",
caption = "Source: R simulations")7 Facets
Plutôt que de colorer par modalité, on peut parfois préférer faire un graphique par modalité d’une variable catégorielle. Pour cela, on utilise les fonctions facet_wrap() ou facet_grid()
ggplot(df, aes(x,y))+
geom_point(col = "lightblue")+
facet_wrap(~organ)ggplot(df, aes(x,y))+
geom_point(col = "lightblue")+
facet_grid(~organ)on peut aussi utiliser ces fonctions sur deux variables catégorielles. Cependant, dans ce ca les deux fonction ne vont pas retourner le même graphique
facet_wrap() fait un graphique par combinaison des modalités des deux variables
ggplot(df, aes(x,y))+
geom_point(col = "lightblue")+
facet_wrap(status~organ)facet_grid() fait aussi un graphique par combinaison des modalités des deux variables, mais de façon plus organisée. En mettant les noms de la première variables à l’horizontale et ceux de la deuxième à la verticale
ggplot(df, aes(x,y))+
geom_point(col = "lightblue")+
facet_grid(status~organ)8 Télécharger un graphique
Pour télécharger le dernier graphique que l’on a exécuté on peut utiliser la fonction ggsave()
ggsave("RESULTS/plotS4.1.png")Saving 7 x 5 in image
Pour télécharger un autre graphique, il faut le nommer puis y faire référence avec l’argument plot = dans ggsave()
p <- ggplot(df, aes(x, y, col = z))+
geom_point()+
scale_colour_gradientn(colours = c("darkred", "orange", "yellow", "white"))
ggsave("RESULTS/plotS4.2.png", plot = p)Saving 7 x 5 in image
On peut spécifier la taille de l’image avec les arguments width et height
ggsave("RESULTS/plotS4.3.png", plot = p, width = 4000, height = 2800, units = "px")On peut également le télécharger au format pdf, en changeant l’extansion du nom de fichier
ggsave("RESULTS/plotS4.3.pdf", plot = p, width = 4000, height = 2800, units = "px")9 Ressources
Les sites Datanovia et STHDA sont très bien faits et très complets pour tout ce qui concernent les graphiques en R
http://www.sthda.com/
https://www.datanovia.com/